$(document).ready(function() {
    // 从本地存储获取用户信息
    const user = JSON.parse(localStorage.getItem('user'));
    const token = localStorage.getItem('token');

    if (!user || !user.token) {
        alert('请先登录');
        window.location.href = 'nor-login.html';
        return;
    }

    // 显示当前用户名字
    $('#current-user').text(user.name || '用户姓名');

    // 页面初始化
    initPage();

    // ==================== 功能函数 ====================

    function initPage() {
        // 显示主内容
        $('#mainContent').show();
        // 获取用户信息
        fetchUserInfo();
        // 绑定事件
        bindEvents();
    }

    function bindEvents() {
        // 个人信息编辑相关
        $('#edit-btn').on('click', function() {
            enableFormEditing(true);
        });

        $('#cancel-btn').on('click', function() {
            enableFormEditing(false);
            fetchUserInfo();
        });

        $('#save-btn').on('click', function() {
            updateUserInfo();
        });

        // 密码修改相关
        $('#change-password-btn').on('click', function() {
            new bootstrap.Modal('#passwordModal').show();
        });

        $('#change-payword-btn').on('click', function() {
            new bootstrap.Modal('#paywordModal').show();
        });

        $('#save-password-btn').on('click', function() {
            updatePassword();
        });

        $('#save-payword-btn').on('click', function() {
            updatePayword();
        });
    }

    // ==================== 用户信息操作 ====================

    function fetchUserInfo() {
        $.ajax({
            url: `http://localhost:8080/api/user/info/${user.id}`,
            type: 'GET',
            headers: {
                'Authorization': user.token
            },
            success: function(response) {
                if (response.success) {
                    displayUserInfo(response.data);
                } else {
                    showAlert('danger', '获取用户信息失败: ' + response.message);
                }
            },
            error: function(error) {
                console.error('获取用户信息出错:', error);
                showAlert('danger', '获取用户信息出错');
            }
        });
    }

    function displayUserInfo(userInfo) {
        $('#name-display').text(userInfo.name);
        $('#role-display').text(userInfo.role === 1 ? '普通用户' : '管理员');
        $('#username').val(userInfo.username || '');
        $('#phone').val(userInfo.phone || '');
        $('#email').val(userInfo.email || '');
        $('#birthday').val(userInfo.birthday ? formatDate(userInfo.birthday) : '');

        // 设置性别
        if (userInfo.sex === 1) {
            $('#male').prop('checked', true);
        } else if (userInfo.sex === 0) {
            $('#female').prop('checked', true);
        }
    }

    function enableFormEditing(enable) {
        $('#user-info-form input').prop('readonly', !enable);
        $('#user-info-form input[type="radio"]').prop('disabled', !enable);

        $('#edit-btn').toggleClass('d-none', enable);
        $('#cancel-btn').toggleClass('d-none', !enable);
        $('#save-btn').toggleClass('d-none', !enable);
    }

    function updateUserInfo() {
        const userData = {
            id: user.id,
            username: $('#username').val(),
            phone: $('#phone').val(),
            email: $('#email').val(),
            birthday: $('#birthday').val(),
            sex: $('input[name="sex"]:checked').val() || null,
            role:1
        };

        $.ajax({
            url: 'http://localhost:8080/api/user/update',
            type: 'PUT',
            contentType: 'application/json',
            headers: {
                'Authorization': user.token
            },
            data: JSON.stringify(userData),
            success: function(response) {
                if (response.success) {
                    showAlert('success', '信息更新成功');
                    enableFormEditing(false);
                    fetchUserInfo();
                } else {
                    showAlert('danger', '更新失败: ' + response.message);
                }
            },
            error: function(error) {
                console.error('更新用户信息出错:', error);
                showAlert('danger', '更新用户信息出错');
            }
        });
    }

    // ==================== 密码操作 ====================

    function updatePassword() {
        const currentPassword = $('#current-password').val();
        const newPassword = $('#new-password').val();
        const confirmPassword = $('#confirm-password').val();

        if (!validatePasswordFields(currentPassword, newPassword, confirmPassword)) {
            return;
        }

        $.ajax({
            url: 'http://localhost:8080/api/user/update-password',
            type: 'POST',
            contentType: 'application/json',
            headers: {
                'Authorization': user.token
            },
            data: JSON.stringify({
                oldPassword: currentPassword,
                newPassword: newPassword
            }),
            success: function(response) {
                if (response.success) {
                    showAlert('success', '密码修改成功');
                    $('#passwordModal').modal('hide');
                    $('#password-form')[0].reset();
                } else {
                    showAlert('danger', '密码修改失败: ' + response.message);
                }
            },
            error: function(error) {
                console.error('修改密码出错:', error);
                showAlert('danger', '修改密码出错');
            }
        });
    }

    function updatePayword() {
        const currentPayword = $('#current-payword').val();
        const newPayword = $('#new-payword').val();
        const confirmPayword = $('#confirm-payword').val();

        if (!validatePasswordFields(currentPayword, newPayword, confirmPayword)) {
            return;
        }

        $.ajax({
            url: 'http://localhost:8080/api/user/update-payword',
            type: 'POST',
            contentType: 'application/json',
            headers: {
                'Authorization': user.token
            },
            data: JSON.stringify({
                oldPayword: currentPayword,
                newPayword: newPayword
            }),
            success: function(response) {
                if (response.success) {
                    showAlert('success', '支付密码修改成功');
                    $('#paywordModal').modal('hide');
                    $('#payword-form')[0].reset();
                } else {
                    showAlert('danger', '支付密码修改失败: ' + response.message);
                }
            },
            error: function(error) {
                console.error('修改支付密码出错:', error);
                showAlert('danger', '修改支付密码出错');
            }
        });
    }

    function validatePasswordFields(current, newPwd, confirmPwd) {
        if (!current || !newPwd || !confirmPwd) {
            showAlert('danger', '请填写所有密码字段');
            return false;
        }

        if (newPwd !== confirmPwd) {
            showAlert('danger', '两次输入的新密码不一致');
            return false;
        }

        if (newPwd.length < 6) {
            showAlert('danger', '密码长度不能少于6位');
            return false;
        }

        return true;
    }

    // ==================== 辅助函数 ====================

    function formatDate(dateString) {
        const date = new Date(dateString);
        return date.toISOString().split('T')[0];
    }

    function showAlert(type, message) {
        const alertHtml = `
            <div class="alert alert-${type} alert-dismissible fade show position-fixed top-0 start-50 translate-middle-x mt-3" role="alert">
                ${message}
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
            </div>
        `;

        $('body').append(alertHtml);

        setTimeout(() => {
            $('.alert').alert('close');
        }, 3000);
    }
});